var productBag = new Array(); //产品集合，用于保存已选择的产品
$j(document).ready(function () {
	//验证
	applyValidate($("lowestPrice"),"price");
	applyValidate($("highestPrice"),"price");

	searchProducts(true);
});

//重设搜索条件
function resetSearchCriteria(){
	fnResetForm("productSearchCriteria");
}


//搜索产品 isNew标示是否新的搜索,param标示是否自定义参数搜索
function searchProducts(isNew,param){
	var postData;
	var url;
	if(isNew){
		if(null==param){
			if(validateSearchCriteria()){
				//有搜索结果搜索
			    postData = $j('#productSearchCriteria :input').serializeArray();
			    url=__ctxPath+"/product/productSelector.html?doAction=search&decorator=blank";
				$j("#productSelectorResults").load(url,postData,searchProductsCallback);   
		    }else{
		    	return;
		    }
		}else{
			//新的搜索。全部，上架等
			//有搜索结果搜索
			if(param.status  != undefined){
				$j('#storageStatus').val(""+param.status);
			}
			if(param.categoryId  != undefined){
				$j('#storageCategoryId').val(""+param.categoryId);
			}
		    postData = $j('#productSelectorResults :input').serializeArray();
			url=__ctxPath+"/product/productSelector.html?doAction=search&decorator=blank&&btnSearch=1";
			$j("#productSelectorResults").load(url,postData,searchProductsCallback);  
		}    
	}else{
		postData = $j('#productSelectorResults :input').serializeArray();
		url=__ctxPath+"/product/productSelector.html?doAction=search&decorator=blank";
		$j("#productSelectorResults").load(url,postData,searchProductsCallback);  
	} 
	
}

//分页
function fnOnGoToPage(){
	searchProducts(false);
}

//搜索产品回调函数
function searchProductsCallback(){
	if(multiple)$j("#multipleSelectDiv").show();
}
//验证函数
function validateSearchCriteria(){
	if(!validateForm($j('#productSearchCriteria').get(0))){
    	return false;
   	}
   	return true;
}
//选择多个产品
function selectProducts(){
	if(productBag.length == 0){
		alert(__FMT.productSelector_pleaseSelect);
		return;
	}
	callbackFunc.call(this,productBag);
	cleanupProducts();
}
//清空产品
function cleanupProducts(){
	productBag = new Array();
	$j("#selectedProductInfo").empty();
}

//选择产品
function selectProduct(productId){
	var product = {"productId":productId,
					"productName":$('productName_'+productId).value,
					"productCode":$('productCode_'+productId).value,
					"imageUrl":$('imageUrl_'+productId).value,
					"productKind":$('productKind_'+productId).value};
					
	if(multiple){
		addProduct(product);
	}else{
		callbackFunc.call(this,product);
	}
}
//添加产品
function addProduct(product){
	
	if(!isContain(product.productId)){
		productBag.push(product);
		addProductInfo(product);
	}else{
		jAlert(__FMT.productSelector_alreadySelect);
	}	
}
//移除产品
function removeProduct(productId){
	var index = indexOfProductBag(productId);
	if(-1 != index){
		productBag.remove(index);
		removeProductInfo(productId);
	}
}
//获取product在productbag中的index，不存在返回-1
function indexOfProductBag(productId){
	for(var i=0; i<productBag.length; i++){
		var item = productBag[i];
		if(item.productId == productId){
			return i;
		}
	}
	return -1;
}
//判断是否已经包含该产品
function isContain(productId){
	var isExist = false;
	for(var i=0; i<productBag.length; i++){
		var item = productBag[i];
		if(item.productId == productId){
			isExist = true;
			break;
		}
	}
	return isExist;
}
//添加产品显示信息 product是一个JSONObject{productId,productName,productCode}
function addProductInfo(product){
	var html = '';
	html += '<li id="productSelectedInfo'+product.productId+'"><div class="first" style="width:170px;">'+product.productName+'<br/>('+product.productCode+')  </div>';
	html += '<div class="second"><a href="javascript:void(0)" class="del" onclick="removeProduct('+product.productId+')">&nbsp;</a></div>';    
	html += '</li>';
	$j("#selectedProductInfo").append(html);
	
}
//移除产品显示信息
function removeProductInfo(productId){
	$j("#productSelectedInfo"+productId).remove();
}


/*
   *  方法:Array.remove(index)
   *  功能:删除数组元素.
   *  参数:index删除元素的下标.
   *  返回:在原数组上修改数组
   */

 Array.prototype.remove=function(index)
 {
   if(isNaN(index)||index>this.length){return false;}
   for(var i=0,n=0;i<this.length;i++)
   {
       if(this[i]!=this[index])
       {
           this[n++]=this[i]
       }
   }
   this.length-=1
 }
 

